/* 
 * File:   Reloj.h
 * Author: 75.02 - Grupo 7, 2do cuatrimestre 2012.
 *
 * Created on 31 de octubre de 2012, 18:53
 */

#ifndef RELOJ_H
#define	RELOJ_H

#include <vector>
#include "ITemporizable.h"

using namespace std;

namespace TP { namespace Juego { namespace Motorizacion { namespace Sincronizacion {

class Reloj {
public:

    Reloj(Ticks pUnidadTiempo);

    virtual ~Reloj();
    
    ITemporizable* addTemporizable (ITemporizable* pTemporizable);
    
    ITemporizable* removerTemporizable (ITemporizable* pTemporizable);
    
    Ticks correr ();
    
    Ticks getTiempo();
    
protected:
    void notificarAvanceTiempo ();
    
private:
    Ticks _unidadTiempo;
    Ticks _tiempoTranscurrido;
    vector<ITemporizable*> _temporizables;

};
    
}}}}

#endif	/* RELOJ_H */

